package com.fessc.develop.handler.processor.send;

import com.fessc.develop.entity.ccbvo.CCBBankCheckJsonVo;
import com.fessc.develop.entity.comvo.BankCheckFileApplyVo;
import com.fessc.develop.entity.comvo.BankCheckFileDownVo;
import com.fessc.develop.entity.comvo.PrePaymentBodyVo;
import com.fessc.develop.entity.dbvo.Enclosure;
import com.fessc.develop.entity.dbvo.SettleTrade;
import com.fessc.develop.entity.dbvo.TPayment;

import java.util.List;

/**
 * 推送处理接口 IProcessor
 */
public interface ISendProcessor {
    /**
     * 预付款单笔推送处理
     * @param tPaymentList
     */
    void prePaymentProcess(List<TPayment> tPaymentList);

    /**
     * 预付款交易状态查询推送
     * @param tPaymentList
     */
    void prePaymentStatusProcess(List<TPayment> tPaymentList);

    /**
     * 跨境付汇推送处理
     * @param settleTrades
     */
    void settleTradeProcess(List<SettleTrade> settleTrades);

    /**
     * 跨境付汇状态查询推送处理
     * @param settleTrades
     */
    void settleTradeStatusProcess(List<SettleTrade> settleTrades);

    /**
     * 预付款退款推送处理
     * @param tPaymentList
     */
    void prePaymentRefundProcess(List<TPayment> tPaymentList);

    /**
     * 预付款退款推送处理
     * @param tPaymentList
     */
    void prePaymentRefundStatusProcess(List<TPayment> tPaymentList);

    /**
     * 对账文件申请
     * @param bankCheckFileApplyVoList
     */
    void bankCheckFileApplyProcess(List<BankCheckFileApplyVo> bankCheckFileApplyVoList);

    /**
     * 对账文件下载
     *
     * @param bankCheckFileDownVoList
     */
    void bankCheckFileDownLoadProcess(List<BankCheckFileDownVo> bankCheckFileDownVoList);

    /**
     * 对账推送-JSON格式
     * @param ccbBankCheckJsonVoList
     */
    void ccbBankCheckJsonProcess(List<CCBBankCheckJsonVo> ccbBankCheckJsonVoList);

    /**
     * 文件附件上传
     * @param enclosureList
     */
    void fileUploadJsonProcess(List<Enclosure> enclosureList);

    /**
     * 获取处理器类型
     * @param
     */
    String getProcessorForBranch();
}
